package top;

import javax.swing.plaf.IconUIResource;

/**
 * @author chenyw
 * @date 2022/7/12 16:00
 * @description    寻找峰值
 *      经典二分
 */
public class Top162findPeekElement {
//    //这个算法有两个测试用例过不去
//    public int findPeakElement(int[] nums) {
//        if (nums.length == 1) {
//            return 0;
//        }
//        int left = 0;
//        int right = nums.length - 1;
//        while (left <= right) {
//            int mid = (left + right) / 2;
//            if (mid == 0) {
//                return 0;
//            } else if (mid == nums.length - 1) {
//                return nums.length - 1;
//            } else {
//                if (nums[mid - 1] < nums[mid] && nums[mid + 1] < nums[mid]) {
//                    return mid;
//                }
//                if (nums[mid - 1] > nums[mid]) {
//                    right = mid - 1;
//                    continue;
//                }
//                if (nums[mid + 1] > nums[mid]) {
//                    left = mid + 1;
//                    continue;
//                }
//            }
//        }
//        return -1;
//    }

    //爬坡法
    public int findPeakElement(int[] nums) {
        int left = 0, right = nums.length - 1;
        while (left < right) {
            int mid = left + ((right - left) >> 1);
            if (nums[mid] < nums[mid + 1]) {
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        return left;
    }
}
